﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities;
using System.Data.SqlClient;

namespace AccesoDatos
{
    public class Categorias
    {
        public static List<Categoria> obtenerTodasCategorias()
        {
            List<Categoria> lstCategoria = null;
            SqlConnection conexion = null;
            try
            {
                conexion = DB.Conectar();
                string comando = "SELECT idCategoria, nombre FROM Categoria order by nombre";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, conexion);
                lstCategoria = new List<Categoria>();
                Categoria objCategoria;
                while (dr.Read())
                {
                    objCategoria = new Categoria();
                    objCategoria.IdCategoria = (int)dr["idCategoria"];
                    objCategoria.Nombre = dr["nombre"].ToString();
                    lstCategoria.Add(objCategoria);
                    objCategoria = null;
                }
            }
            catch (SqlException ex)
            {
                //Con throw la información de la pila es mas profunda de donde se genero el error
                //En la capa de Presentación se Captura como Exception
                throw new Exception("Hubo un problema al cargar las categorias.", ex);
            }
            catch (Exception ex)
            {
                throw new Exception("Hubo un problema al cargar las categorias.", ex);
            }
            finally
            {
                conexion.Close();
            }
            return lstCategoria;
        }

        public static Categoria BuscarPorId(int id)
        {
            Categoria objCategoria = null;
            SqlConnection conexion = null;
            try
            {
                 conexion = DB.Conectar();
                string comando = "SELECT  idCategoria, nombre FROM Categoria WHERE (idCategoria = @id)";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                lstParametros.Add(new SqlParameter("@id", id));
                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, conexion);
                while (dr.Read())
                {
                    objCategoria = new Categoria();
                    objCategoria.IdCategoria = (int)dr["idCategoria"];
                    objCategoria.Nombre = dr["nombre"].ToString();
                }
            }
            catch (SqlException ex)
            {
                //Con throw la información de la pila es mas profunda de donde se genero el error
                //En la capa de Presentación se Captura como Exception
                throw new Exception("Hubo un problema al cargar la categoria.", ex);
            }
            catch (Exception ex)
            {
                throw new Exception("Hubo un problema al cargar la categoria.", ex);
            }
            finally
            {
                conexion.Close();
            }
            return objCategoria;
        }
    }
}

